Skip to content

Conversation

Copy link
Contributor

Copilot AI commented Dec 4, 2025

Fixes #36376

Description

The Kestrel overview page previously showed enhanced feature listing only for .NET 10. This PR extends that feature list to .NET 8 and later, while moving memory pool content to a dedicated article as requested by the maintainer.

Changes

  • New article: Created memory-management.md under Kestrel section (moniker: >= aspnetcore-10.0)

    • Covers automatic memory pool eviction (new in .NET 10)
    • Documents IMemoryPoolFactory usage and custom implementations
  • Kestrel overview (kestrel.md): Contains only >= aspnetcore-10.0 content

    • Enhanced features list with memory management link
    • Get started and Additional resources sections
  • Kestrel 6.x include (kestrel6.md): Split moniker ranges to provide version-appropriate content

    • >= aspnetcore-8.0 <= aspnetcore-9.0: Enhanced features list (without memory management)
    • >= aspnetcore-6.0 < aspnetcore-8.0: Original scenarios list
    • Ensures no overlap with main file moniker ranges
  • Removed sections:

    • "Optional client certificates" from main overview and kestrel6.md include
    • Inline memory eviction content (now in dedicated article)
  • TOC: Added memory management article after Diagnostics

Moniker Strategy

The corrected moniker strategy uses the include file pattern to avoid overlapping ranges:

  • kestrel.md: Only >= aspnetcore-10.0 (no overlap with include file)
  • kestrel6.md include:
    • >= aspnetcore-8.0 <= aspnetcore-9.0 with enhanced features
    • >= aspnetcore-6.0 < aspnetcore-8.0 with original content
    • Earlier versions handled in subsequent ranges

This approach eliminates duplicate H2 headers and build warnings while ensuring:

  • .NET 6-7: Shows original scenarios list
  • .NET 8-9: Shows enhanced feature list without memory management
  • .NET 10+: Shows enhanced feature list including memory management with link to new article

💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.


Internal previews

📄 File 🔗 Preview link
aspnetcore/fundamentals/servers/kestrel.md aspnetcore/fundamentals/servers/kestrel
aspnetcore/fundamentals/servers/kestrel/memory-management.md aspnetcore/fundamentals/servers/kestrel/memory-management
aspnetcore/toc.yml aspnetcore/toc

Copilot AI changed the title [WIP] Update Kestrel overview content for .NET 8 and later Show Kestrel overview feature list for .NET 8+ and move memory management to dedicated article Dec 4, 2025
Copilot AI requested a review from tdykstra December 4, 2025 23:31
Copilot finished work on behalf of tdykstra December 4, 2025 23:31
@tdykstra tdykstra marked this pull request as ready for review December 5, 2025 18:46
@tdykstra tdykstra requested a review from wadepickett December 5, 2025 18:51
@wadepickett
Copy link
Contributor

wadepickett commented Dec 5, 2025

@tdykstra, looks like we hav an learning opporrtunity here for copilot. A moniker mishap, see build warning. Otherwise the PR looks great. Once figured out we can add the solution to the copilot instructions. Copilot did lay out its moniker strategy above in the description and so it was following our repo level instruction set so that is good at least.

Copy link
Contributor

@wadepickett wadepickett left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Moniker issues, see build warnings. Dupe H2's etc as a result.

@tdykstra
Copy link
Contributor

tdykstra commented Dec 6, 2025

@copilot Copilot manipulated monitor tags. The result worked correctly according to what was written in the issue, but the build reported errors in the way the moniker tags were used. Can you correct the moniker tag errors while still producing the effect the issue called for?

Copy link
Contributor Author

Copilot AI commented Dec 6, 2025

@copilot Copilot manipulated monitor tags. The result worked correctly according to what was written in the issue, but the build reported errors in the way the moniker tags were used. Can you correct ...

Fixed in commit 73e5f4d. The issue was duplicating entire sections within separate moniker ranges. Changed to use a single >= aspnetcore-8.0 range for common content, with a nested >= aspnetcore-10.0 range only for the memory management bullet point that differs.

Copilot AI requested a review from tdykstra December 6, 2025 00:10
Copilot finished work on behalf of tdykstra December 6, 2025 00:10
@tdykstra
Copy link
Contributor

tdykstra commented Dec 6, 2025

@copilot The build is still reporting warnings with the revised moniker tag strategy. Can you please take another look?

Copy link
Contributor Author

Copilot AI commented Dec 6, 2025

@copilot The build is still reporting warnings with the revised moniker tag strategy. Can you please take another look?

Fixed in commit c0dbc36. The issue was that my >= aspnetcore-8.0 range in kestrel.md overlapped with the >= aspnetcore-6.0 <= aspnetcore-9.0 range in the kestrel6.md include file, causing duplicate headers for versions 8-9.

The solution: kestrel.md now only has >= aspnetcore-10.0 content, and I split the kestrel6.md range into two:

  • >= aspnetcore-8.0 <= aspnetcore-9.0 with enhanced features list
  • >= aspnetcore-6.0 < aspnetcore-8.0 with original scenarios list

This eliminates all overlaps while achieving the goal of showing enhanced features for .NET 8+.

Copilot finished work on behalf of tdykstra December 6, 2025 00:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Show updated Kestrel overview content for .NET 8 and later

3 participants